package cz.vse.adventura.po1715.xburj54_bursa;

import cz.pecinovsky.english.pojj.adv_framework.game_gui.IUIG;
import cz.vse.adventura.po1715.xburj54_bursa.hra.HraLupič;
import cz.pecinovsky.english.pojj.adv_framework.game_txt.IGame;
//import cz.pecinovsky.english.pojj.adv_framework.game_txt.IUI;
import cz.vse.adventura.po1715.xburj54_bursa.hra.HraLupič;
import java.io.IOException;

/*******************************************************************************
 * Instance třídy {@code MainCon} spouští hru v consolovém režimu
 * prostřednictvím metody třídy
 *
 * @author Jan Bursa
 * @version 1.02,  16.12.2010
 */
public class MainCon implements IUIG
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Metoda, prostřednictvím níž se spouští celá aplikace.
     *
     * @param args  Parametry načtené z příkazového řádku
     */
    public static void main(String[] args)
    {
    MainCon ui = new MainCon();
    ui.startGame();
    }

     /***************************************************************************
     * Metoda, prostřednictvím níž se spouští hra a vypíše úvodní obrazovku. */
    @Override
    public void startGame(IGame hra)
    {
    String příkaz ="";
    String odpoved;
    for(;;) {
       odpoved = hra.executeCommand(příkaz);
       System.out.println(odpoved);
    if (hra.isReady()){
     break;                 //-------->
    }
       System.out.print("\n> ");
        příkaz = přečtiŘádek();
        }
    }

     /***************************************************************************
     * Metoda, prostřednictvím níž se spouští hra a vypíše úvodní obrazovku. */
    @Override
    public void startGame()
    {
        HraLupič hra = HraLupič.getHra();
        startGame(hra);
    }

     /***************************************************************************
     * Metoda, prostřednictvím níž se zpracovávají přkazy ve hře. */
    private String přečtiŘádek()
    {
        StringBuilder sb = new StringBuilder();
        int znak;
        try {
        while ((znak = System.in.read())!= '\n'){
            sb.append((char)znak);
        }
        } catch (IOException ex){
        System.out.println("chyba");
        }
        return sb.toString();
    }

    /***************************************************************************
     * Zpracuje příkaz předaný v parametru jako by byl zadán standardním
     * postupem z klávesnice. Metoda umožňuje testovat reakce daného
     * uživatelského rozhraní na příkazy zadávané z klávesnice.
     *
     * @param command Zadávaný příkaz
     */
    @Override
    public void executeCommand(String command) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /***************************************************************************
     * Vrátí jméno autora scénáře ve formátu <b>PŘÍJMENÍ Křestní</b>,
     * tj. neprve příjmení psané velkými písmeny a za ním křestní jméno,
     * u nějž bude velké pouze první písmeno a ostatní písmena budou malá.
     *
     * @return Jméno autora/autorky programu ve tvaru PŘÍJMENÍ Křestní
     */
    @Override
    public String getAuthor() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /***************************************************************************
     * Vrátí x-name autora/autorky programu zapsané velkými písmeny.<p>
     * X-name má tvar <b>{@code XPPPK99}</b> nebo <b>{@code XPPPK999}</b>,
     * kde<br>
     * <ul>
     *   <li><b>{@code PPP}</b> zastupuje první tří písmena příjmení autora(ky)
     *      zapsaná velkými písmeny, </li>
     *   <li><b>{@code K}</b> zastupuje první písmeno křestního jména a </li>
     *   <li><b>{@code 99}</b>, resp. <b>{@code 999}</b> zastupují číslice
     *      přiřazené systémem, pomocí nichž se rozsliší studenti(ky)
     *      s předchozími znaky shodnými.
     * </ul>
     *
     * @return X-name autora/autorky programu
     */
    @Override
    public String getXNAME() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTOVACÍ METODY A TŘÍDY ==================================================
//
//     /***************************************************************************
//      * Testovací metoda.
//      */
//     public static void test()
//     {
//         MainCon x = new MainCon();
//     }
//     /** @param args Parametry příkazového řádku - nepoužívané. */
//     public static void main(String[] args)  {  test();  }
}
